home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / dev / gui / textfield.lha / TextField / Doc / textfield_gc.doc next >
Encoding:
Text File  |  1994-06-27  |  21.6 KB  |  539 lines

  1. TABLE OF CONTENTS
  2.  
  3. textfield.gadget/textfield.gadget
  4. textfield.gadget/TEXTFIELD_GetClass
  5. textfield.gadget/textfield.gadget           textfield.gadget/textfield.gadget
  6.  
  7.     NAME
  8.     textfield.gadget -- create multiline text entry BOOPSI objects (V1.2)
  9.  
  10.     LEGAL
  11.     textfield.gadget is © 1994 Mark Thomas
  12.     All rights reserved.
  13.  
  14.     FUNCTION
  15.     The textfield class allows you create an area on your screen for text
  16.     entry.  The class supports a number of features including unlimited
  17.     or limited text entry, specifying the font to use, specifying the
  18.     colors for different parts (text, background, and lines), two types
  19.     of borders (with option to invert the borders for a total of 4 types
  20.     of borders) or no border, text left/center/right justification,
  21.     vertical centering, and other options.
  22.  
  23.     The textfield class gadget should be used for relatively small areas
  24.     where you want to allow text entry.  Typically a size below 320 x 200
  25.     is a fairly reasonable limit, but larger sizes will work.  In other
  26.     words it is not intended to be a whole editor like Ed.  Please note
  27.     that the vertical size has more affect on speed than the horizontal
  28.     size.
  29.  
  30.     To use the class you must open the "textfield.gadget" library like so:
  31.     OpenLibrary("gadgets/textfield.gadget", 0).  If that was successful,
  32.     then you need to get the class pointer with the TEXTFIELD_GetClass()
  33.     function.  You do not have to check to make sure that the pointer
  34.     returned by TEXTFIELD_GetClass() is valid (see TEXTFIELD_GetClass
  35.     description).  You do not have to return the pointer with any
  36.     function, just do not use the pointer after you close the
  37.     "textfield.gadget" library.
  38.  
  39.     If you use SAS/C 6.50 or greater, then you can use the TextFieldAuto.c
  40.     source file provided in the source draw to have the library open
  41.     automatically at startup, and close automatically at termination so
  42.     that you will not have to take care of these yourself.
  43.  
  44.     Future versions of the textfield.gadget intend to offer a public class
  45.     name that you can use, but that will have to wait until (or if)
  46.     Commodore or CATS return from the dead since I have to register the
  47.     class name.  At which time that a public class name is offered, both
  48.     the old TEXTFIELD_GetClass() and the class name can be used with the
  49.     CreateObject() function so that old and new programs will work.
  50.  
  51.     The class will work on OS 2.04 and up, but for OS 2.04 through 2.1
  52.     there is no standard place to put .gadget libraries, so on these
  53.     systems the gadget should be installed in a drawer named "Gadgets" in
  54.     the same directory of the program that uses it.  See the example
  55.     program on how to open the class.  For OS 3.0 and up, just install
  56.     the textfield.gadget file in "SYS:Classes/Gadgets" like normal.
  57.  
  58.     Unlike the Amiga's string gadget, you get a gadget up message from
  59.     this gadget when you hit the right mouse button, or either Amiga keys
  60.     and the right alt keys pressed together.
  61.  
  62.     This gadget does support the GA_Image tag for rendering a linked list
  63.     of images attached to the gadget.  Borders structures are not
  64.     supported.  (Complain if you want it.)
  65.  
  66.     This may or may not help you, but the render order for the elements of
  67.     this gadget is as follows:
  68.  
  69.         Border (if enabled)
  70.         Lines of text
  71.         Image  (from GA_Image)
  72.  
  73.     So, images do overwrite borders and the lines of text.  Also note that
  74.     the gadget will render at least one line of text, and at least one
  75.     character per line, so restrict the width and height if this is a
  76.     problem.
  77.  
  78.     IMPORTANT:
  79.     (It's anyone's guess as to what will happen if you don't follow the
  80.     rules below.)
  81.  
  82.     Do NOT do an GetAttr() on TEXTFIELD_Text unless the gadget is turned
  83.     off with OffGadget() or disabled with GA_Disabled, TRUE.  Also, do not
  84.     use the value returned from GetAttr() on TEXTFIELD_Text after the
  85.     gadget is turned back on with OnGadget() or enabled with GA_Disabled,
  86.     TRUE.  You MUST GetAttr() each time you want to get access to the text
  87.     buffer.  And you must NOT alter the data in the buffer.  It is READ
  88.     ONLY.  You will get a NULL if you attempt to get the TEXTFIELD_Text
  89.     variable without disabling the gadget.  Also, if the TEXTFIELD_Size is
  90.     0, a NULL is returned for TEXTFIELD_Text, so don't try to reference
  91.     the value you get back.
  92.  
  93.     Also, to find out how much text is in the buffer, use GetAttr() on
  94.     TEXTFIELD_Size after the gadget is turned off with OffGadget() or
  95.     disabled with GA_Disabled, TRUE.  You should NOT read past the end of
  96.     the buffer (past the size returned by GetAttr() on TEXTFIELD_Size).
  97.     The buffer is not 0 terminated.  You are given the specific size.
  98.  
  99.     The text you get from TEXTFIELD_Text only contains values from 0x0a,
  100.     0x20 - 0x7f, and 0xa0 - 0xff.  In other words you get the printable
  101.     characters, plus '\n'.  No tabs are supported for now.
  102.  
  103.     When setting attributes, the gadget will always render the changes,
  104.     except if the gadget's geometry is changed, in which case it will
  105.     return a non-zero value to let you know changes need to be rendered by
  106.     refreshing the gadget.
  107.  
  108.     DOCS FOR USERS
  109.  
  110.     You can mark text for cutting, copying, and erasing by simply clicking
  111.     and dragging.  Hitting alphanumeric keys replaces the text that is
  112.     highlighted.  Hitting cursor keys moves you to the front or end of the
  113.     highlighted text.
  114.  
  115.     For key sequences, the Amiga Style Guide was followed.  Anywhere the
  116.     undelete buffer is mentioned, the statement is only valid if the
  117.     ClipStream2 is supplied (see tag section below).
  118.  
  119.     Key Sequence              Function
  120.     ----------------------------------------------------------------------
  121.            TAB                Activate next gadget (if GA_TabCycle)
  122.  
  123.      SHIFT TAB                Activate previous gadget (if GA_TabCycle)
  124.  
  125.      SHIFT cursor up          Move to the top line in the current page, or
  126.                               scroll up one page if cursor is on top line
  127.  
  128.      SHIFT cursor down        Move to the bottom line in the current page,
  129.                               or scroll down one page if cursor is on top
  130.                               line
  131.  
  132.       CTRL or
  133.      SHIFT cursor right       Move to the right end of the current line
  134.  
  135.       CTRL or
  136.      SHIFT cursor left        Move to the left end of the current line
  137.  
  138.      SHIFT backspace          Delete all text to the left of cursor on the
  139.                               current line
  140.  
  141.      SHIFT delete             Delete all text to the right of the cursor
  142.                               on the current line (in block cursor mode
  143.                               this also includes the highlighted
  144.                               character)
  145.  
  146.       CTRL cursor up          Move to the top line of the text
  147.  
  148.       CTRL cursor down        Move to the bottom line of the text
  149.  
  150.        ALT cursor right       Move to the next word (using the delimiter
  151.                               characters provided by the programmer)
  152.  
  153.        ALT cursor left        Move to the previous word (using the
  154.                               delimiter characters provided by the
  155.                               programmer)
  156.  
  157.        ALT cursor up          Move to first character in gadget
  158.  
  159.        ALT cursor down        Move to last character in gadget
  160.  
  161.     RAMIGA [                  Switch to left justification
  162.  
  163.     RAMIGA \ or
  164.     RAMIGA =                  Switch to center justification
  165.  
  166.     RAMIGA ]                  Switch to right justification
  167.  
  168.     RAMIGA e                  Erase all text in gadget (saved in undelete
  169.                               buffer)
  170.  
  171.     RAMIGA v                  Paste text from clipboard to current cursor
  172.                               position
  173.  
  174.     RAMIGA a                  Mark all text
  175.  
  176.     RAMIGA u                  Undelete the last block of text marked,
  177.                               or recover from RAMIGA e
  178.  
  179.     When text is highlighted the following keys have functions:
  180.  
  181.            backspace          Erase marked text (save in undelete buffer)
  182.  
  183.            delete             Erase marked text (save in undelete buffer)
  184.  
  185.     RAMIGA x                  Cut marked text to clipboard
  186.  
  187.     RAMIGA c                  Copy marked text to clipboard
  188.  
  189.     RAMIGA v                  Replace marked text with text from
  190.                               clipboard (save marked text in undelete
  191.                               buffer)
  192.  
  193.            (any text key)     Replace marked text with that character
  194.     ----------------------------------------------------------------------
  195.  
  196.     TAGS
  197.     GA_Left (WORD) -- Specifies the left edge of the gadget.
  198.  
  199.     GA_Top (WORD) -- Specified the top edge of the gadget.
  200.  
  201.     GA_Width (WORD) -- Specifies the width of the gadget.  If a border is
  202.         chosen, it will be rednered within this value.
  203.  
  204.     GA_Height (WORD) -- Specifies the height of the gadget.  If a border
  205.         is chosen, it will be rendered within this value.
  206.  
  207.     GA_RelRight (WORD) -- Specifies the gadget as being relative to the
  208.         right border of whatever the gadget is attached to.  See the
  209.         BOOPSI Class Reference.
  210.  
  211.     GA_RelBottom (WORD) -- Specifies the gadget as being relative to the
  212.         bottom border of whatever the gadget is attached to.  See the
  213.         BOOPSI Class Reference.
  214.  
  215.     GA_RelWidth (WORD) -- Specifies the gadget as being relative to the
  216.         width of whatever it is attached to.  See the BOOPSI Class
  217.         Reference.
  218.  
  219.     GA_RelHeight (WORD) -- Specifies the gadget as being relative to the
  220.         height of whatever it is attached to.  See the BOOPSI Class
  221.         Reference.
  222.  
  223.     GA_Image (struct Image *) -- Pass a pointer to a linked list of images
  224.         and this class will render them.  See rendering order above.
  225.  
  226.     GA_Disabled (BOOL) -- TRUE disables the gadget, not allowing input,
  227.         and FALSE enables the gadget for input.  When the gadget is
  228.         disables, it usually is ghosted, see TEXTFIELD_NoGhost for
  229.         other conditions.
  230.  
  231.     GA_TabCycle (BOOL) -- Turns on tab cycling.  See the BOOPSI Class
  232.         Reference.
  233.  
  234.     TEXTFIELD_Text (char *) -- This set/replaces text.  NULL means no
  235.         change.  To set the buffer empty pass "" (pointer to empty
  236.         string).  When you use it to get text see special conditions
  237.         under IMPORTANT above.
  238.  
  239.         Default for this tag is NULL.  Applicability is (ISG U).
  240.  
  241.     TEXTFIELD_InsertText (char *) -- This inserts text at current cursor
  242.         position.
  243.  
  244.         Default for this tag is NULL.  Applicability is ( S  U).
  245.  
  246.     TEXTFIELD_TextFont (struct TextFont *) -- Sets the font for the gadget
  247.         to use.  Pass the object a pointer to a TextFont structure.
  248.         This supersedes TEXTFIELD_TextAttr below.  Please do not close
  249.         this font while the gadget is using it. :)  The default font
  250.         is your screen's current font.
  251.  
  252.         Default for this tag is NULL. Applicability is (IS  U).
  253.  
  254.     TEXTFIELD_TextAttr (struct TextAttr *) -- Sets the font the gadget is
  255.         to use.  Pass the gadget a pointer to a TextAttr structure.
  256.         This is superseded by TEXTFIELD_TextFont.  The default font is
  257.         the screen's current font.
  258.  
  259.         Default for this tag is NULL.  Applicability is (IS  U).
  260.  
  261.     TEXTFIELD_FontStyle (ULONG) -- The style will get set to what you pass
  262.         here.  The font style automatically gets reset when
  263.         TEXTFIELD_TextFont or TEXTFIELD_TextAttr is set.
  264.  
  265.         Default for this tag is FSF_PLAIN.  Applicability is (IS  U).
  266.  
  267.     TEXTFIELD_Delimiters (char *) -- You get the default if you pass NULL.
  268.         Words break after these and "\n".  You will probably want at
  269.         least " ", the space.
  270.  
  271.         Default for this tag is ",)!@^&*_=+\\|<>?/ ".  Applicability
  272.         is (IS  U).
  273.  
  274.     TEXTFIELD_BlinkRate (ULONG) -- This sets the number of microseconds
  275.         between a cursor on-off, or off-on transition.  A value of 0
  276.         means do not blink.  Realistically, this should be set to
  277.         100000 or higher since BOOPSI objects don't get idle messages
  278.         any faster than about once every 10th of a second, but any
  279.         value between 0 and 100000 will just make the cursor blink as
  280.         fast as it can.  If you give the user an option of blink
  281.         speed, suggest values: 0 for no blink, 750000 for a slow
  282.         blink, 500000 for a medium blink, and 250000 for a fast blink.
  283.  
  284.         Default for this tag is 0.  Applicability is (IS  U).
  285.  
  286.     TEXTFIELD_BlockCursor (BOOL) -- Turn on/off block cursor mode.  You
  287.         should not use a block cursor if your font is italic because
  288.         it looks weird.
  289.  
  290.         Default for this tag is FALSE.  Applicability is (IS  U).
  291.  
  292.     TEXTFIELD_CursorPos (ULONG) -- Get/Set the cursor position.  The
  293.         cursor position returned is always an exact offset into the
  294.         buffer you get to read via TEXTFIELD_Text.  0 takes you to the
  295.         first character in the gadget, and 0xFFFFFFFF takes you past
  296.         the last character in the gadget.  In general, any value you
  297.         pass that is larger than what's returned by TEXTFIELD_Size
  298.         will end up just past the last character in the gadget.  This
  299.         will scroll the text to the position you set the cursor to.
  300.  
  301.         Applicability is (ISG U).
  302.  
  303.     TEXTFIELD_Size (ULONG) -- Returns the number of characters in the
  304.         gadget's buffer, including \n characters.  This gives you the
  305.         size when you want to use TEXTFIELD_Text to read the text in
  306.         the gadget.
  307.  
  308.         Applicability is (  G  ).
  309.  
  310.     TEXTFIELD_MaxSize (ULONG) -- Limit the size of text entered into the
  311.         gadget.  0 means unlimited, otherwise limits the buffer size
  312.         to what you pass.  This includes \n characters.
  313.  
  314.         Default for this tag is UNLIMITED. Applicability is (I    ).
  315.  
  316.     TEXTFIELD_Visible (ULONG ) -- Get the current number of visible lines.
  317.         It always returns how many _could_ be displayed if there were
  318.         enough characters to fill the display.  Use for notifying a
  319.         BOOPSI prop gadget.  See example program.
  320.  
  321.         Applicability is (  GN ).
  322.  
  323.     TEXTFIELD_Lines (ULONG) -- Get the total number of lines in the buffer
  324.         of the gadget.  Use this to also notify a BOOPSI prop gadget.
  325.         See example program.
  326.  
  327.         Applicability is (  GN ).
  328.  
  329.     TEXTFIELD_Top (ULONG) -- Get or set ordinal value of top line.  Useful
  330.         for ICA_MAP and ICA_TARGET when using the BOOPSI prop gadget.
  331.         See sample program for example.
  332.  
  333.         Default for this tag is 0.  Applicability is ( SGNU).
  334.  
  335.     TEXTFIELD_Partial (BOOL) -- When this flag is set to TRUE, partial
  336.         lines will be shown at the bottom of the gadget.  When this
  337.         flag is set to false, then only whole lines will be shown in
  338.         the gadget.  Note that having both TEXTFIELD_VCenter, and
  339.         TEXTFIELD_Partial on is not allowed and doesn't make sense.
  340.         If both TEXTFIELD_VCenter and TEXTFIELD_Partial are turned on
  341.         at the same time, only TEXTFIELD_VCenter will get turned on.
  342.  
  343.         Default for this tag is FALSE.  Applicability is (IS  U).
  344.  
  345.     TEXTFIELD_NoGhost (BOOL) -- If TRUE, never ghost when gadget is
  346.         disabled.  If FALSE, then ghost when gadget is disabled.  You
  347.         can use this to make a read-only multiline string gadget.  It
  348.         has a special purpose, though.
  349.  
  350.         Normally you will want a gadget to be enabled when allowing
  351.         text to be entered.  However, when you need to read the text
  352.         from the gadget, you have to disable it.  But disabling a
  353.         gadget ghosts it.  So, with this option, you can pass
  354.         GA_Disabled, TRUE, TEXTFIELD_NoGhost, TRUE at the same time
  355.         and it will disable without ever showing the ghosted pattern.
  356.         And likewise, passing the attributes GA_Disabled, FALSE,
  357.         TEXTFIELD_NoGhost, FALSE will seamlessly reenable the gadget.
  358.         While the gadget is disabled, read the text and then be on
  359.         your way.  Also note that most S and U attributes are settable
  360.         while the gadget is disabled, notably TEXTFIELD_Top.  This
  361.         allows you to make a scrollable read-only multiline non-
  362.         ghosted text, image capable, and border capable gadget.
  363.         Sounds useful to me!
  364.  
  365.         Default for this tag is FALSE.  Applicability is (IS  U).
  366.  
  367.     TEXTFIELD_Border (ULONG) -- Sets the border type.  See defines below.
  368.         The gadget offers a standard bevel, and standard double bevel.
  369.         If you need another type, your could always create an image,
  370.         link it to the gadget with GA_Image, and set its top and left
  371.         edges above and to the left of this gadget (negative in the
  372.         image structure), and make the width and height larger than
  373.         this gadget.
  374.  
  375.         Default for this tag is TEXTFIELD_BORDER_NONE.  Applicability
  376.         is (IS  U).
  377.  
  378.     TEXTFIELD_Inverted (BOOL) -- If this flags is TRUE, the border is
  379.         drawn inverted, if there is a border.  If FALSE, the border is
  380.         drawn non-inverted.  This option is here in case you want to
  381.         give the textfield gadget a read-only look when used in
  382.         conjunction with TEXTFIELD_NoGhost and GA_Disabled.
  383.  
  384.         Default for this tag is FALSE.  Applicability is (IS  U).
  385.  
  386.     TEXTFIELD_Up (ULONG) -- Moves the text up by one line.  You can pass
  387.         anything, but it will only move the text up by a line, if it's
  388.         not at the top already.  Useful BOOPSI notifications.
  389.  
  390.         Applicability is ( S  U).
  391.  
  392.     TEXTFIELD_Down (ULONG) -- Moves the text down by one line.  You can
  393.         pass anything, but it will only move the text down by a line,
  394.         if it's not at the bottom already.  Useful for BOOPSI
  395.         notifications.
  396.  
  397.         Applicability is ( S  U).
  398.  
  399.     TEXTFIELD_Alignment (ULONG) -- Set/Get the line justification.  This
  400.         gadget offers left, center, and right justification.  See
  401.         defines below.
  402.  
  403.         Default for this tag is TEXTFIELD_ALIGN_LEFT.  Applicability
  404.         is (ISG U).
  405.  
  406.     TEXTFIELD_VCenter (BOOL) -- Turn on/off vertical centering.  When on,
  407.         the lines in the display are centered vertically.  If the
  408.         total number of lines is less than the visible number of lines
  409.         then the smaller number of lines are centered.  This allows
  410.         you to center single lines of text within the gadget very
  411.         easily.  For normal text entry operation, it is best to leave
  412.         this off.  Also, check TEXTFIELD_Partial for possible
  413.         conflicts when used with TEXTFIELD_VCenter.
  414.  
  415.         Default for this tag is FALSE.  Applicability is (IS  U).
  416.  
  417.     TEXTFIELD_UserAlign (BOOL) -- If this is set at creation, then the
  418.         user will have control over the left/center/right
  419.         justification of text through RIGHT-AMIGA [, =, ] keyboard
  420.         shortcuts.  If you want to save what the user has set the
  421.         justification to, then do a GetAttr() on TEXTFIELD_Alignment.
  422.  
  423.         Default for this tag is FALSE.  Applicability is (I    ).
  424.  
  425.     TEXTFIELD_RuledPaper (BOOL) -- Lets you set whether the paper
  426.         (background) has ruled horizontal lines under each line of
  427.         text or not.
  428.  
  429.         Default for this tag is FALSE.  Applicability is (IS  U).
  430.  
  431.     TEXTFIELD_PaperPen (ULONG) -- This lets you specify the pen used for
  432.         drawing the paper (background) of the gadget.  A value of -1
  433.         means use default, which is BACKGROUNDPEN.
  434.  
  435.         Default for this tag is -1.  Applicability is (IS  U).
  436.  
  437.     TEXTFIELD_InkPen (ULONG) -- This lets you specify the pen used for
  438.         drawing the text.  A value of -1 means use the default, which
  439.         is TEXTPEN.  If this pen, and the TEXTFIELD_LinePen are
  440.         different, then rendering speed is slowed down a bit.  It is
  441.         recommended that the line pen be left to -1.
  442.  
  443.         Default for this tag is -1.  Applicability is (IS  U).
  444.  
  445.     TEXTFIELD_LinePen (ULONG) -- This lets you specify the pen used for
  446.         drawing the ruled lines, if TEXTFIELD_RuledPaper is TRUE.  See
  447.         TEXTFIELD_InkPen for possible speed problems when specifying
  448.         this pen.  A value of -1 means to use the same pen as
  449.         TEXTFIELD_InkPen.
  450.  
  451.         Default for this tag is -1.  Applicability is (IS  U).
  452.  
  453.     TEXTFIELD_Spacing (UBYTE) -- Lets you set an extra amount of spacing
  454.         between lines of text, for maybe doing 1-1/2 or double
  455.         spacing.  It's a pixel value between 0 and 255.  The space is
  456.         added to the top of each line.  In other words, the baseline
  457.         is moved down by the amount you specify.
  458.  
  459.         Default for this tag is 0.  Applicability is (IS  U).
  460.  
  461.     TEXTFIELD_ClipStream (struct ClipboardHandle *) -- This tag allows
  462.         clipboard support in the gadget.  Pass the pointer returned
  463.         from the iffparse.library OpenClipboard() function.  If a NULL
  464.         is passed, the clipboard support is not allowed.  Please
  465.         supply this tag value.  Don't leave users without clipboard
  466.         support.  It is recommended that the unit opened by
  467.         OpenClipboard() be 0 or PRIMARY_UNIT, since that is the
  468.         standard unit, but you can pick whatever unit you or your user
  469.         wants.  This stream can be safely given to multiple objects.
  470.  
  471.         Default for this tag is NULL.  Applicability is (I    ).
  472.  
  473.     TEXTFIELD_ClipStream2 (struct ClipboardHandle *) -- ClipStream2 is
  474.         used for the undo features of the textfield class.  It is
  475.         obtained from the iffparse.library OpenClipboard() function.
  476.         You should probably use a clipboard unit other than 0 to avoid
  477.         conflicts with normal clips.  This stream can be safely passed
  478.         to multiple objects.
  479.  
  480.         Default for this tag is NULL.  Applicability (I    ).
  481.  
  482.     BORDER REFERENCE
  483.     You can use the width and heights given when calculating window sizes
  484.     and limits.  To make the window's height minimal with respect to your
  485.     font, use (window border top) + (window border bottom) + (num_lines *
  486.     (font height)) + (gadget border height).  Also, if you use
  487.     TEXTFIELD_Spacing, you'll have to add that in too.
  488.  
  489.     TEXTFIELD_BORDER_NONE            Border takes up:  0 width,  0 height
  490.     TEXTFIELD_BORDER_BEVEL           Border takes up:  8 width,  4 height
  491.     TEXTFIELD_BORDER_DOUBLEBEVEL     Border takes up: 12 width,  6 height
  492.  
  493.     ALIGMENT REFERENCE
  494.     TEXTFIELD_ALIGN_LEFT             Cause text to be flush left
  495.     TEXTFIELD_ALIGN_CENTER           Cause text to be centered
  496.     TEXTFIELD_ALIGN_RIGHT            Cause text to be flush right
  497.  
  498.     BUGS
  499.     What bugs?  Please let me know if you find any.
  500.     See the History file for a list of fixed bugs.
  501.  
  502.     CONTACT
  503.     To contact me for reporting bugs or giving suggestions:
  504.  
  505.     Mark Thomas
  506.     1515 Royal Crest Dr. #3259
  507.     Austin, TX  78741
  508.  
  509.     or
  510.  
  511.     mthomas@cs.utexas.edu
  512. textfield.gadget/TEXTFIELD_GetClass       textfield.gadget/TEXTFIELD_GetClass
  513.  
  514.     NAME
  515.     TEXTFIELD_GetClass -- Gets the pointer to the textfield class. (V1.2)
  516.  
  517.     SYNOPSIS
  518.     textfield_class = TEXTFIELD_GetClass();
  519.     D0
  520.  
  521.     Class *TEXTFIELD_GetClass(void);
  522.  
  523.     FUNCTION
  524.     Obtains the pointer to the textfield.gadget class for use with
  525.     CreateObject().  This function always returns a valid pointer so
  526.     you do not need to check it.  The reason is that if the library
  527.     opens fine, then the pointer returned is already setup.  (Of course
  528.     this implies that if opening the library fails, you shouldn't be
  529.     calling this.)
  530.  
  531.     INPUTS
  532.     None.
  533.  
  534.     RESULT
  535.     textfield_class - the pointer to the textfield.gadget class.
  536.  
  537.     BUGS
  538.     None.
  539.